package com.yss.reportworld.service;

import com.yss.common.core.domain.TreeNode;
import com.yss.reportworld.domain.Modular;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 模块Service接口
 *
 * @author yss
 * @date 2023-03-17
 */
public interface IModularService extends IService<Modular> {

    /**
     * 查询模块列表
     *
     * @param modular 模块
     * @return 模块集合
     */
    public List<Modular> selectModularList(Modular modular);

    /**
     * 查询模块信息
     *
     * @param modular
     * @return
     */
    public Modular selectModularById(Modular modular);

    /**
     * 查询模块树结构信息
     *
     * @return 模块树信息集合
     */
    public List<TreeNode> selectModularTreeList();

    /**
     * 递归查询所有下级模块ID集合
     *
     * @param id
     * @return
     * @throws Exception
     */
    public List<String> queryModularIds(String id);

    /**
     * 添加模块信息
     *
     * @param modular
     * @throws Exception
     */
    public boolean addModular(Modular modular);

    /**
     * 修改模块信息
     *
     * @param modular
     * @throws Exception
     */
    public boolean editModular(Modular modular);


    /**
     * 删除模块信息
     *
     * @param modular
     * @throws Exception
     */
    public boolean delModular(Modular modular);

    /**
     * 里获取报表模块信息
     *
     * @return
     * @throws Exception
     */
    public Map<String, Modular> getModularMap();

    /**
     * 模块数据的json
     */
    public String getModularJsonInfo();

    /**
     * 校验模块名称是否唯一
     *
     * @param modular
     * @return 结果
     */
    public boolean checkNameUnique(Modular modular);
}
